Ext.tree.DWRTreeLoader = function(config) {

  Ext.tree.DWRTreeLoader.superclass.constructor.call(this, config);

};



Ext.extend(Ext.tree.DWRTreeLoader, Ext.tree.TreeLoader, {

   requestData : function(node, callback) {

    if (this.fireEvent("beforeload", this, node, callback) !== false) {



      //todo

      //var params = this.getParams(node);



      var callParams = new Array();

      var success = this.handleResponse.createDelegate(this, [node, callback], 1);

      var error = this.handleFailure.createDelegate(this, [node, callback], 1);

      callParams.push(node.id);

      callParams.push({callback:success, errorHandler:error});



      //todo: do we need to set this to something else?

      this.transId=true;

      this.dataUrl.apply(this, callParams);

    } else {

      // if the load is cancelled, make sure we notify

      // the node that we are done

      if (typeof callback == "function") {

        alert(callback);

        callback();

      }

    }

  },

    processResponse : function(response, node, callback){

        try {

          for(var i = 0; i < response.length; i++){

                var n = this.createNode(response[i]);

                if(n){

                    node.appendChild(n);

                }

            }

            if(typeof callback == "function"){

                callback(this, node);

            }

        }catch(e){

            this.handleFailure(response);

        }

    },



    handleResponse : function(response, node, callback){

        this.transId = false;

        this.processResponse(response, node, callback);

        this.fireEvent("load", this, node, response);

    },



    handleFailure : function(response, node, callback){

        this.transId = false;

        this.fireEvent("loadexception", this, node, response);

        if(typeof callback == "function"){

            callback(this, node);

        }

    }



}); 
